package com.atguigu.gmall.feign.product;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.to.CategoryTree;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;


//！！！！！！！！！！！ ！！！！！！feign的基本知识
@RequestMapping("/api/inner/product")
//使用@FeignClient ， Feign 自己去注册中心去找service-product的真正地址
//1. service-product 的两种含义
//1）、需要远程调用的服务名是哪个
//2）、作为当前feign客户端的 客户端的配置名（超时、容错、重试）；

//2. //如果 value重名了。三种办法：
//1)、配置文件允许Bean定义信息重写
//      在配置文件上写
//      main:
//    allow-bean-definition-overriding: true
//      允许Bean重写

//2）、每个人指定唯一的 contextId
//      在@FeignClient(value="", contextId="")

//3)、将某个服务暴露的所有远程接口，都放到一个FeignClient类中进行集中式管理（缺点：代码多不好看  优点：集中管理维护容易）


//3. Feign客户端自动生成我们想要的数据类型？？？
@FeignClient("service-product")
public interface CategoryFeignClient {

    @GetMapping("/category/tree")
    Result<List<CategoryTree>> getCategoryTreeData();
}
